import utils from '@/utils';
import axios from 'axios';


const api = axios.create({
  baseURL: '/api',
  timeout: 60000, // 设置请求超时时间
});

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    // 开启loading
    if (!config.skipLoading) {
      config.loadingInstance = utils.message.openLoading();
    }
    return config;
  },
  (error) => {
    console.error('request error');
    throw error;
  }
);

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    // 关闭loading
    if (response.config.loadingInstance && !response.config.skipLoading) {
      utils.message.closeLoading(response.config.loadingInstance);
    }

    if (response.data.code === 200) {
      return response.data;
    }
    utils.message.error(response.data.message || response.data.msg);
    throw new Error(response.data.message || response.data.msg);
  },
  async (error) => {
    // 关闭loading
    if (error.config && error.config.loadingInstance) {
      utils.message.closeLoading(error.config.loadingInstance);
    }

    await handleError(error);
  }
);

async function handleError(error) {
  let message;
  if (error.response) {
    message = error.response.data || '服务器内部异常';
  } else {
    message = error.message;
  }
  utils.message.error(message);
  throw error;
}


// 定义通用的请求方法
const request = (config) => {
  return api.request(config);
};
export default request;

// token 相关函数已移除，现在通过 pinia store 管理
